import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei' #中文显示
img1=cv.imread("../imgs/letterclose.png")
img2=cv.imread("../imgs/letteropen.png")
#创建核结构
kernel=np.ones((10,10),np.uint8)
# 和上例区别只有： cv.MORPH_TOPHAT 和 cv.MORPH_BLACKHAT
#礼帽：原图像与“开运算“的结果图之差；一幅图像具有大幅的背景的时候，而微小物品比较有规律的情况下，可以使用顶帽运算进行背景提取
cvOpen=cv.morphologyEx(img1,cv.MORPH_TOPHAT,kernel)
#黑帽：”闭运算“的结果图与原图像之差；黑帽运算用来分离比邻近点暗一些的斑块。
cvClose=cv.morphologyEx(img1,cv.MORPH_BLACKHAT,kernel)
#展示在一张图中:figsize=(10,8):创建8英寸和高度为6英寸的图形
fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(10,8),dpi=100)
axes[0,0].imshow(img1)
axes[0,0].set_title("原图")
axes[0,1].imshow(cvOpen)
axes[0,1].set_title("礼帽结果")
axes[1,0].imshow(img2)
axes[1,0].set_title("原图")
axes[1,1].imshow(cvClose)
axes[1,1].set_title("黑帽结果")
plt.show()
